#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//最大公约数
//辗转相除法
int main()
{
	int x = 0;
	int y = 0;
	scanf("%d %d", &x, &y);
	int t = 0;
	while (t=x % y)
	{
		x = y;
		y = t;
	}
	printf("%d", y);
	return 0;
}
////打印1000到2000年之间的闰年
//int main()
//{
//	for (int i = 1000; i <= 2000; i++)
//	{
//		if ((i % 400 == 0) || (i % 4 == 0) && (i % 100 != 0))
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}
////打印100——200 之间的素数
//int main()
//{
//	for (int i = 100; i <= 200; i++)
//	{
//		int flag = 1;
//		for (int j = 2; j < i; j++)
//		{
//			if (i % j == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if (flag == 1)
//			printf("%d ", i);
//	}
//}
////将三个数从大到小排序
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	scanf("%d %d %d", &a, &b, &c);
//	if (a < b)
//	{
//		int temp = a;
//		a = b;
//		b = temp;
//	}
//	if (a < c)
//	{
//		int temp = a;
//		a = c;
//		c = temp;
//	}
//	if (b < c)
//	{
//		int temp = b;
//		b = c;
//		c = temp;
//	}
//	printf("%d %d %d", a, b, c);
//	return 0;
//}
////打印1——100之间3的倍数
//int main()
//{
//	int i = 0;
//	for (i = 1; i <= 100; i++)
//	{
//		if (i % 3 == 0)
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}
//int main()
//{
//	/*char str[] = "wsxsgdshuaib";
//	printf("%s", str);
//	return 0;*/
//	printf("%d", sizeof(char*));
//}
////输出1——100的奇数
//int main()
//{
//	int n = 100;
//	for (int i = 1; i <= 100; i++)
//	{
//		if (i % 2 != 0)
//		{
//			printf("%d ", i);
//		}
//	}
//	return 0;
//}
////判断一个数是否为奇数
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	if (n % 2 != 0)
//	{
//		printf("%d是奇数", n);
//	}
//	return 0;
//}